package com.duke.shaking.utils;

import java.util.Map;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

/**
 * Utility class for save and retrieve value from shared
 * preference
 * @author xiaomin
 *
 */
public class PrefUtils {

	private static Context context;
	private static SharedPreferences sp;
	private Editor editor;
	private static final String DEFAULT_PREF_NAME = "shakePref";

	private static final PrefUtils instance = new PrefUtils(); 

	private PrefUtils( ) { 
	}

	public static PrefUtils getInstance(Context _context, String prefName, int mode) { 
		context = _context;
		sp = context.getSharedPreferences(prefName, mode);
		return instance; 
	}
	
	public static PrefUtils getInstance(Context _context, String prefName) {
		return getInstance(_context, prefName, Context.MODE_PRIVATE);
	}
	
	public static PrefUtils getInstance(Context _context) {
		return getInstance(_context, DEFAULT_PREF_NAME);
	}
	
	public PrefUtils remove(String key) {
		editor = sp.edit();
		editor.remove(key);
		editor.commit();
		return instance;
	}
	
	/* ----- Boolean ----- */
	public PrefUtils addBoolean(String key, Boolean value) {
		editor = sp.edit();
		editor.putBoolean(key, value);
		editor.commit();
		return instance;
	}
	
	public boolean getBoolean(String key, boolean defValue) {
		return sp.getBoolean(key, defValue);
	}
	
	/* ----- String ----- */
	public PrefUtils addString(String key, String value) {
		editor = sp.edit();
		editor.putString(key, value);
		editor.commit();
		return instance;
	}
	
	public String getString(String key, String defValue) {
		return sp.getString(key, defValue);
	}
	
	/* ----- Integer ----- */
	public PrefUtils addInt(String key, int value) {
		editor = sp.edit();
		editor.putInt(key, value);
		editor.commit();
		return instance;
	}
	
	public int getInt(String key, int defValue) {
		return sp.getInt(key, defValue);
	}
}
